﻿using eslib.FFPackage;

namespace test
{
    internal class Program
    {
        static void Main(string[] args)
        {

            //构建数据包
            byte[] data = [0x01, 0x02, 0xff, 0xf0, 0xf1];

            //按FF协议编码（可用于网络，串口，无线数据收发等）
            byte[] encoded = FFMatcher.Encode(data);
            Console.WriteLine($"[发送数据] {bytesToString(encoded)}");  //模拟发送数据（串口，网络，无线设备等）



            //解码
            FFMatcher matcher = new(dataReciveCallback);
            //模拟收到数据流，向mather传入
            matcher.InStream(encoded);

            Console.WriteLine("程序已结束");
            Console.ReadKey(true);
        }

        /// <summary>
        /// 收到数据触发
        /// </summary>
        /// <param name="buf"></param>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        private static async Task dataReciveCallback(byte[] buf)
        {
            Console.WriteLine($"[收到数据包] {bytesToString(buf)}");

            //模拟耗时处理数据包
            await Task.Delay(10);
        }


        static string bytesToString(byte[] data)
        {
            string res = "";
            foreach (var b in data)
            {
                res += $"{b:x2} ";
            }
            return res.Trim();
        }
    }
}
